package com.zhongfl.crm.lixiao.mapper;

import com.zhongfl.crm.enums.boss.AmibaCode;
import com.zhongfl.crm.model.boss.AmibaStaff;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * amiba_staff
 * Created by wangkun23 on 2018/1/17.
 */
public interface AmibaStaffMapper {
    int deleteByPrimaryKey(Integer id);

    void deleteByAmibaId(Integer amibaId);

    void deleteBatchByAmibaId(@Param("amibaIds") List<Integer> amibaIds);

    int insertSelective(AmibaStaff record);

    AmibaStaff selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(AmibaStaff record);


    /**
     * 通过阿米巴的id查询
     *
     * @param amibaId
     * @return
     */
    List<AmibaStaff> selectByAmibaId(@Param("amibaId") Integer amibaId);

    List<AmibaStaff> selectByAmibaIds(@Param("amibaIds") List<Integer> amibaIds);

    List<AmibaStaff> selectByAmibaIds2(@Param("amibaIds") List<Integer> amibaIds);

    /**
     * 根据阿米巴code查询
     */
    List<AmibaStaff> selectByAmibaCode(@Param("amibaCode") AmibaCode amibaCode);

    /**
     * 通过staffcode查询
     *
     * @param staffCode
     * @return
     */
    List<AmibaStaff> selectByStaffCode(String staffCode);

    /**
     * 获取指定部门的员工信息
     *
     * @param staffCode
     * @param amibaId
     * @return
     */
    AmibaStaff selectByStaffCodeAndAmibaId(@Param("staffCode") String staffCode, @Param("amibaId") Integer amibaId);

    List<AmibaStaff> selectManagerByAmibaCode(AmibaCode code);

    /**
     * 通过手机号查询
     * @param mobile 手机号
     * @return 员工信息
     */
    AmibaStaff selectByMobile(String mobile);

    /**
     * 通过员工编号和阿米巴编号查询
     * @param staffCode 员工编号
     * @param amibaCode 阿米巴编号
     * @return 员工列表
     */
    List<AmibaStaff> selectByStaffCodeAndAmibaCode(@Param("staffCode") String staffCode, @Param("amibaCode") AmibaCode amibaCode);


    /**
     * 查询所有amibaStaff
     * @return
     */
    List<AmibaStaff> findAll();

    /**
     * 通过条件查询
     * @param amibaStaff 查询条件
     * @return 员工列表信息
     */
    List<AmibaStaff> selectByCondition(AmibaStaff amibaStaff);


    /**
     * 通过阿米巴id查询员工姓名列表
     * @param amibaId 阿米巴id
     * @return 姓名列表
     */
    List<String> findNameByAmibaId(Integer amibaId);

    /**
     * 通过阿米巴id查询员工code列表
     * @param amibaId 阿米巴id
     * @return code列表
     */
    List<String> findCodeByAmibaId(@Param("amibaId") Integer amibaId);

    /**
     * 根据阿米巴类型查询员工姓名
     * @param amibaCode 阿米巴类型
     * @return 查询结果
     */
    Set<String> findNameByAmibaCode(@Param("amibaCode") AmibaCode amibaCode);

    /**
     * 根据阿米巴类型查询员工编码
     * @param amibaCode 阿米巴类型
     * @return 查询结果
     */
    Set<String> findCodeByAmibaCode(@Param("amibaCode") AmibaCode amibaCode);

    /**
     * 根据阿米巴id和审批角色码找到对应巴的审批人
     * @param amibaId 阿米巴id
     * @param approvalRole 审批角色
     * @return 审批人数据对象
     */
    AmibaStaff selectApprover(@Param("amibaId") Integer amibaId, @Param("approvalRole") Integer approvalRole);
}